pandas数据保存至Mysql数据库
作者:王大伟
Python爱好者社区唯一小编
博客:https://ask.hellobi.com/blog/wangdawei
前言
好久没写文章了,你们想我了没【我就是这样,你习惯就好】
前段时间写了两篇mysql和python交互的文章
第一篇局限于导入一条数据进入数据库【主要讲的是面向对象编程和Python数据库操作基础】
传送门:Python操作Mysql数据库入门——查看和增加记录
第二篇讲的是从数据库读取数据到pandas【为数据分析做准备】
传送门:Python操作Mysql数据库入门——数据导入pandas(数据分析准备)
因为最近又在写爬虫,所以想把爬到的数据(dataframe格式)存在mysql里
终于在今天下午成功了
小试牛刀
import MySQLdb
import pandas as pd
from sqlalchemy import create_engine
host = '127.0.0.1'
port = 3306
db = 'test'
user = 'root'
password = '********'
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s") % (user, password, host, db))
try:
df = pd.DataFrame([[1,'x'],[2,'y']],columns=list('ab'))
df.to_sql('test1',con=engine,if_exists='replace',index=False)
except Exception as e:
print(e)
注:需要你修改的部分:
(1)db是你本地数据库的名称(你用自己本地的数据库名称)
(2)password是你本地数据库的密码
这里我创建了一个简单的df用于测试:
结果运行成功:
本地数据库自动新建了一个test1表,数据成功写入,(我用的mysql客户端软件是:Navicat)
大显身手
当然,我们平时数据清洗好的df或者爬虫爬到的数据做成df怎么保存到mysql呢?
其实现在看起来就很简单了
当然,在这里,我只教会大家怎么保存df到mysql
如果大家对爬虫和数据分析清洗有兴趣,可以看我以前写的文章
我打开了一个爬虫爬到的房地产数据,如下图:
我们看一下数据的df:
我们现在要将这个df写入mysql,就好比爬到的数据或者清洗完的数据写入mysql:
import MySQLdb
import pandas as pd
from sqlalchemy import create_engine
host = '127.0.0.1'
port = 3306
db = 'test'
user = 'root'
password = '********'
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s") % (user, password, host, db))
try:
df = pd.read_csv('house_data.csv')
df.to_sql('test1',con=engine,if_exists='replace',index=False)
except Exception as e:
print(e)
注:需要你修改的部分:
(1)db是你本地数据库的名称(你用自己本地的数据库名称)
(2)password是你本地数据库的密码
运行结果是,捕获到了异常:
意思大概是:一部分拉丁无法编码,所以我们设置一下编码方式:charset=utf8
import MySQLdb
import pandas as pd
from sqlalchemy import create_engine
host = '127.0.0.1'
port = 3306
db = 'test'
user = 'root'
password = '********'
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s?charset=utf8") % (user, password, host, db))
try:
df = pd.read_csv('house_data.csv')
df.to_sql('test1',con=engine,if_exists='replace',index=False)
except Exception as e:
print(e)
注:需要你修改的部分:
(1)db是你本地数据库的名称(你用自己本地的数据库名称)
(2)password是你本地数据库的密码
只修改了这一行代码:
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s?charset=utf8") % (user, password, host, db))
我们打开本地的数据库,右键刷新:
已经可以看到,数据已经写入mysql了
大家想要加其他功能可以参考:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html
如有错误之处,请留言评论指出,谢谢~
业务知识一站通,懂业务,让你从技术人才中脱颖而出!
陈老师基于咨询公司从业经验与8年25个项目经验,精心打造业务知识体系课程。
点击阅读原文立即学习
关注后在公众号内回复“课程”即可获取:
1.崔老师爬虫实战案例免费学习视频。
2.丘老师数据科学入门指导免费学习视频。
3.陈老师数据分析报告制作免费学习视频。
4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。
5.丘老师Python网络爬虫实战免费学习视频。
为大家提供与Python相关的最新技术和资讯。
长按指纹 > 识别图中二维码 > 添加关注